# Filters added to this controller apply to all controllers in the application.
# Likewise, all the methods added will be available for all controllers.

class ApplicationController < ActionController::Base
  @@ppt = nil

  before_filter :adjust_format_for_iphone

  before_filter :ole_ppt_init
  helper :all # include all helpers, all the time

  # See ActionController::RequestForgeryProtection for details
  # Uncomment the :secret if you're not using the cookie session store
  protect_from_forgery # :secret => '7f6c177b835fdd06bd8650e36c4a0cab'
  
  # See ActionController::Base for details 
  # Uncomment this to filter the contents of submitted sensitive data parameters
  # from your application log (in this case, all fields with names like "password"). 
  # filter_parameter_logging :password

protected
  def adjust_format_for_iphone
    request.format = :iphone if params[:format] == "iphone" ||
      (request.env["HTTP_USER_AGENT"] && request.env["HTTP_USER_AGENT"][/(Mobile\/.+Safari)/])
  end

  def ole_ppt_init
    if @@ppt == nil
      @@ppt = WIN32OLE.new('PowerPoint.Application')
      @@ppt.Visible = true
    else
      begin
        @@ppt.Active
      rescue WIN32OLERuntimeError
        @@ppt = nil
        @@ppt = WIN32OLE.new('PowerPoint.Application')
        @@ppt.Visible = true
      end
    end
  end

end
